DVRF 的全称是 Danm Vulnerable Router Firmware,该项目是一个基于 OpenWrt 改造的漏洞固件。用 CTF 模式来帮助安全专业人员测试物联网设备中常见的漏洞,其中部分漏洞题基于公开的 CVE 漏洞。
DVRF | 描述 |
---|---|
L1 Brute Login | |
L2 Damn XSS | (CVE-2019-18993) |
L3 What‘s your bandwidth? | (CVE-2019-12272) |
L4 Untar | |
L5 Easy serialize | |
L6 Try Opkg | (CVE-2020-7982) |
L7 Baby & Big Pwn | (CVE-2018-1160) |
本题是进行以下所有解题的一个必要条件,即获得登录密码进入固件后台。由于密码未知,攻击者要熟练掌握burpsuite等工具的使用,以获得解题提示。设计题目时,对密码关键词进行了加密,攻击者需要从提示中尝试各种解密方法来获得有意义的结果从而进行下一步破解。爆破密码的总体思路多样,使用的爆破方式也可以有多种。
本题是基于公开漏洞CVE-2019-18993设计而成,旨在让用户了解相关的跨站脚本攻击漏洞。攻击者在成功登陆之后需要找到xss攻击点,绕过我们设置的限制,这需要敏锐找到网页源码中给予的提示,寻找到有效的文本输入框,在进行xss攻击时需要注意过滤一些符号,并触发相关的函数,方能获得下一题的提示。本题解题的总体逻辑不变,绕开的方式有多种,需要攻击者自行尝试。
本题是基于公开漏洞 CVE-2019-12272 设计而成,旨在让用户了解有关 URL 接口的命令注入漏洞。该接口可用于获取网卡 eth0 的宽带数据,但是由于处理参数时未检查和处理命令拼接而导致命令注入漏洞。在设计该题目时,为增加题目难度对参数进行一定的过滤,如禁用 cat
,less
,more
等命令,同时该命令无法直接执行与根目录操作有关的命令,如 cd /
,tail /flag
等命令。本题的解题方法不止一种,对于该命令注入漏洞接口,攻击者可以构造各种各样的 payload 以获取服务器信息。
本题旨在让用户了解有关文件上传的漏洞利用。该题目设计了上传文件并解压文件到固定目录的功能,在网页端上传选择好的 tar 文件后,服务器就会将上传的文件解压存储在固定目录。由于服务器在解压文件后,未对文件进行检查和处理导致攻击者可以上传木马进行攻击。在设计题目时,对上传的文件进行固定重命名而避免了用户利用文件名进行命令拼接。解题的关键是用户要将木马放在服务器某目录并执行该目录,想要攻击成功攻击者需要了解 openwrt web 端的整体架构与逻辑,主要掌握 lua 语言和 luci 架构。本题的解题方法不止一种,构造怎样的 payload,如何执行木马,木马实现怎样的功能都可以由攻击者设计决定,木马可以简单的执行函数寻找服务器内的 flag 并返回 json 字段在网页端;也可以 socket 连接,让用户直接访问服务器 shell。
本题改编自第十六届全国大学生信息安全创新实践能力赛-华北赛区赛题 ez_date 旨在让用户了解有关反序列化的漏洞利用。该题目会为用户提供反序列化函数源码及相关会用到函数源码,用户根据源码了解反序列化函数的运行逻辑,自行构造序列化值发送到相应接口获取 flag。在反序列化函数中有有关 md5 值的比较,需要攻击者可以绕开 md5 值比较,使得两个变量值不同但 md5 值相同;除此之外还需要绕过一些过滤规则。
本题基于公开漏洞CVE-2020-7982设计而成,旨在让用户了解有关文件校验和任意文件执行的漏洞利用。在这个任务中,我们采用了 OpenWRT 的软件包管理系统 opkg。攻击者需要理解 opkg 如何处理软件包安装和升级,以及利用 CVE-2020-7982 漏洞来制作并上传一个恶意的软件包。
opkg 在安装或升级软件包时会验证包的 SHA-256 校验和,然而,该漏洞允许攻击者修改软件包中的文件内容但仍保持校验和不变。这样,攻击者可以将恶意代码注入软件包,并在路由器上执行。
解题的关键在于:攻击者需要先识别出存在的签名验证问题;然后,需要成功地伪造一个包含恶意payload的软件包并对其进行签名;最后利用伪造的更新服务器或其他手段,使目标设备安装或更新该恶意软件包。
本题基于公开漏洞 CVE-2018-1160 设计而成,旨在让用户了解有关写越界
、地址空间布局随机化 (ASLR)
、位置独立执行 (PIE)
以及 return2libc
攻击的漏洞利用。在这个任务中,我们采用了 Netatalk 的AFP服务器。攻击者需要理解 Netatalk 如何处理 AFP 命令,并利用 CVE-2018-1160 漏洞来发送恶意的AFP命令。
Netatalk 在处理 AFP 命令时存在一个写越界的漏洞,然而,该漏洞允许攻击者越过程序的正常内存边界来写入数据,可能会导致程序崩溃,或者更糟糕的是,允许攻击者执行任意代码。在存在 ASLR 和 PIE 的系统中,这个漏洞的利用会更复杂,因为攻击者不能直接知道代码和数据在内存中的位置。这就需要使用更复杂的攻击技术,如 return2libc 攻击,将控制流引导到现有的可执行代码(例如库函数)中。
解题的关键在于:攻击者首先需要识别出写越界的漏洞,然后成功地构造并发送包含恶意 payload 的 AFP 命令;然后,需要理解和应对 ASLR 和 PIE 的保护机制,使用了暴力破解(brute force)和进程分叉(fork)的技术来获取信息泄露;最后,需要理解和利用 return2libc 技术,将控制流引导到已存在的代码中,以实现攻击者的目的。